home *** CD-ROM | disk | FTP | other *** search
/ Nebula 1 / Nebula One.iso / Utilities / Other / mCD / Source / CD_DBase.subproj / CD_DBase.m < prev    next >
Encoding:
Text File  |  1995-04-16  |  17.4 KB  |  453 lines

  1.  
  2. #import "CD_DBase.h"
  3. #import "CD_DBaseSubs.h"
  4.  
  5. @implementation CD_DBase
  6.  
  7.     /* I intend to hook up some real database to this, once I
  8.      * figure out how I want that to work.  So far I just tack on
  9.      * info for CD's as I play them, mainly for checking purposes.
  10.      */
  11.  
  12. #define U2_WIDEAWAKEINAMERICA  448632633 /* key parts = 1246.15.04.483 286 */
  13. #define MOLDFIELD_OMMADAWN     793550963 /* key parts = 2204.23.03.1163 204 */
  14. #define TDREAM_WHITE_DE        829200608 /* key parts = 2303.25.04.1208 275 */
  15. #define TDREAM_WHITE           834192613 /* key parts = 2317.15.04.1213 278 */
  16. #define PINKF_UMMAGUMMA_D1     857271062 /* key parts = 2381.23.04.512 770 */
  17. #define MOLDFIELD_HERGESTRIDGE 871248390 /* key parts = 2420.10.02.1290 1128 */
  18. #define VAPO_GRAVITATIONAL     887822707 /* key parts = 2466.13.02.2107 357 */
  19. #define TDREAM_HYPERB_DE       901738301 /* key parts = 2504.62.04.551 1191 */
  20. #define TDREAM_HYPERB          908760706 /* key parts = 2524.25.04.556 1196 */
  21. #define PINKF_WYWH_USA1        955800362 /* key parts = 2655.00.02.1262 1391 */
  22. #define RENAIS_SCHEHER_TRC     986808651 /* key parts = 2741.10.04.651 1471 */
  23. #define MOLDFIELD_EXPOSED_D2   990720501 /* key parts = 2752.00.03.1701 384 */
  24. #define RENAIS_SCHEHER_REP     991402254 /* key parts = 2753.67.04.654 1479 */
  25. #define TDREAM_PERGAMON_REL    996936347 /* key parts = 2769.20.02.1397 1370 */
  26. #define TDREAM_PERGAMON_CAR    999720353 /* key parts = 2777.00.02.1403 1373 */
  27. #define MOLDFIELD_EXPOSED_D1  1022649986 /* key parts = 2840.52.02.1586 1252 */
  28. #define MOLDFIELD_BOXED_D3    1026351008 /* key parts = 2850.73.04.1208 358 */
  29. #define MOLDFIELD_TUBULARBELL 1057488333 /* key parts = 2937.35.02.1533 1402 */
  30. #define TDREAM_LOGOS_DE       1099113906 /* key parts = 3053.07.02.2706 345 */
  31. #define MOLDFIELD_ORCHTUBELLS 1103640392 /* key parts = 3065.50.02.1592 1471 */
  32. #define TDREAM_LOGOS          1105930093 /* key parts = 3072.02.03.1543 349 */
  33. #define RENAIS_CARNEGIE_D2    1131120410 /* key parts = 3142.00.02.1760 1380 */
  34. #define SOFTW_SYNCODE         1204920476 /* key parts = 3347.00.03.1376 567 */
  35. #define MOLDFIELD_AMAROK      1297665752 /* key parts = 3604.47.01.3602 3602 */
  36. #define BKISTEN_HEADVISIONS   1391904747 /* key parts = 3866.30.04.1497 717 */
  37. #define KSCH_DRESDEN_D2       1487136410 /* key parts = 4130.70.02.2810 1318 */
  38. #define KSCH_ENTRANCE         1530586289 /* key parts = 4251.47.04.1139 1067 */
  39. #define TDREAM_ENCORE         1533816667 /* key parts = 4260.45.04.967 1053 */
  40. #define TDREAM_ENCORE_DE      1540042282 /* key parts = 4277.67.04.982 1056 */
  41. #define MOLDFIELD_INCANT      1574280700 /* key parts = 4373.00.04.1150 1022 */
  42. #define KSCH_DRESDEN_D1       1585550965 /* key parts = 4404.23.03.2665 1111 */
  43. #define KSCH_DOMEEVENT        1604880362 /* key parts = 4458.00.02.3812 644 */
  44.  
  45.  
  46. - fillTocTitles:(struct cd_toc *)tocPtr givenKey:(u_int)cdKey
  47. {
  48.     /* split the records up into subroutines based on the number of
  49.      * songs on the album.  This routine was getting a bit too big...
  50.      */
  51.     if ( tocPtr->lasttrack >= 5 ) {
  52.     switch ( tocPtr->lasttrack ) {
  53.     case 5:
  54.         filltoc05(tocPtr, cdKey);
  55.         break;
  56.     case 6:
  57.         filltoc06(tocPtr, cdKey);
  58.         break;
  59.     case 7:
  60.         filltoc07(tocPtr, cdKey);
  61.         break;
  62.     case 8:
  63.         filltoc08(tocPtr, cdKey);
  64.         break;
  65.     case 9:
  66.         filltoc09(tocPtr, cdKey);
  67.         break;
  68.     case 10:
  69.         /* There are a lot of CD's with 10 tracks... */
  70.         if ( cdKey > CDKEY_50min )      filltoc10_50(tocPtr, cdKey);
  71.         else if ( cdKey > CDKEY_45min ) filltoc10_45(tocPtr, cdKey);
  72.         else if ( cdKey > CDKEY_40min ) filltoc10_40(tocPtr, cdKey);
  73.         else                            filltoc10_00(tocPtr, cdKey);
  74.         break;
  75.     case 11:
  76.         filltoc11(tocPtr, cdKey);
  77.         break;
  78.     case 12:
  79.         filltoc12(tocPtr, cdKey);
  80.         break;
  81.     case 13:
  82.         filltoc13(tocPtr, cdKey);
  83.         break;
  84.     case 14: case 15:
  85.         filltoc14(tocPtr, cdKey);
  86.         break;
  87.     case 16: case 17:
  88.         filltoc16(tocPtr, cdKey);
  89.         break;
  90.     case 18: case 19:
  91.         filltoc18(tocPtr, cdKey);
  92.         break;
  93.     default: /* 20 or more tracks... */
  94.         filltoc20(tocPtr, cdKey);
  95.         break;
  96.     }
  97.     return self;
  98.     }
  99.  
  100.     /* CD's with less than 5 tracks are checked here... */
  101.     
  102.     if ( cdKey == BKISTEN_HEADVISIONS ) { /* 1:04:26-30 */
  103.     tocPtr->discPerformer = "Bernd Kistenmacher";
  104.     tocPtr->discTitle = "Head-Visions";
  105.     SET_CDtt( 1, 24.57, "Rücksturz");
  106.     SET_CDtt( 2, 14.27, "Quitting Time");
  107.     SET_CDtt( 3, 13.03, "La Tendresse");
  108.     SET_CDtt( 4, 11.57, "Dreamdance  [live in 1990, bonus track]");
  109.     }
  110.     if ( cdKey == MOLDFIELD_TUBULARBELL ) { /* 0:48:57-35 */
  111.     tocPtr->discPerformer = "Mike OldField";
  112.     tocPtr->discTitle = "Tubular Bells";
  113. #     if !defined(SKIPSONGS_Mike_Oldfield)
  114.     SET_CDtt( 1, 25.33, "Tubular Bells: Part One");
  115.     SET_CDtt( 2, 23.22, "Tubular Bells: Part Two");
  116. #     endif
  117.     }
  118.     if ( cdKey == MOLDFIELD_HERGESTRIDGE ) { /* 0:40:20-10 */
  119.     tocPtr->discPerformer = "Mike OldField";
  120.     tocPtr->discTitle = "Hergest Ridge";
  121. #     if !defined(SKIPSONGS_Mike_Oldfield)
  122.     SET_CDtt( 1, 21.30, "Hergest Ridge: Part One");
  123.     SET_CDtt( 2, 18.48, "Hergest Ridge: Part Two");
  124. #     endif
  125.     }
  126.     if ( cdKey == MOLDFIELD_ORCHTUBELLS ) { /* 0:51:05-50 */
  127.     tocPtr->discPerformer = "Mike OldField";
  128.     tocPtr->discTitle = "The Orchestral Tubular Bells";
  129. #     if !defined(SKIPSONGS_Mike_Oldfield)
  130.     SET_CDtt( 1, 26.32, "The Orchestral Tubular Bells: Part 1");
  131.     SET_CDtt( 2, 24.31, "The Orchestral Tubular Bells: Part 2");
  132. #     endif
  133.     }
  134.     if ( cdKey == MOLDFIELD_OMMADAWN ) { /* 0:36:44-23 */
  135.     tocPtr->discPerformer = "Mike OldField";
  136.     tocPtr->discTitle = "Ommadawn";
  137. #     if !defined(SKIPSONGS_Mike_Oldfield)
  138.     SET_CDtt( 1, 19.23, "Ommadawn: Part One");
  139.     SET_CDtt( 2, 13.55, "Ommadawn: Part Two");
  140.     SET_CDtt( 3, 03.24, "The Horse Song");
  141. #     endif
  142.     }
  143.     if ( cdKey == MOLDFIELD_BOXED_D3 ) { /* 0:47:30-73 */
  144.     tocPtr->discPerformer = "Mike OldField";
  145.     tocPtr->discTitle = "Boxed  [disc 3]";
  146. #     if !defined(SKIPSONGS_Mike_Oldfield)
  147.     SET_CDtt( 1, 20.08, "Ommadawn: Part One");
  148.     SET_CDtt( 2, 17.23, "Ommadawn: Part Two");
  149.     SET_CDtt( 3, 03.59, "The Phaeacian Games");
  150.     SET_CDtt( 4, 05.58, "First Excursion");
  151. #     endif
  152.     }
  153.     if ( cdKey == MOLDFIELD_INCANT ) { /* 1:12:53-00 */
  154.     tocPtr->discPerformer = "Mike OldField";
  155.     tocPtr->discTitle = "Incantations";
  156. #     if !defined(SKIPSONGS_Mike_Oldfield)
  157.     SET_CDtt( 1, 19.10, "Incantations: Part One");
  158.     SET_CDtt( 2, 19.38, "Incantations: Part Two");
  159.     SET_CDtt( 3, 17.01, "Incantations: Part Three");
  160.     SET_CDtt( 4, 17.02, "Incantations: Part Four");
  161. #     endif
  162.     }
  163.     if ( cdKey == MOLDFIELD_EXPOSED_D1 ) { /* 0:47:20-52 */
  164.     tocPtr->discPerformer = "Mike OldField";
  165.     tocPtr->discTitle = "Exposed  [disc 1]";
  166. #     if !defined(SKIPSONGS_Mike_Oldfield)
  167.     SET_CDtt( 1, 26.26, "Incantations (Parts 1 & 2)");
  168.     SET_CDtt( 2, 20.52, "Incantations (Parts 3 & 4)");
  169. #     endif
  170.     }
  171.     if ( cdKey == MOLDFIELD_EXPOSED_D2 ) { /* 0:45:52-00 */
  172.     tocPtr->discPerformer = "Mike OldField";
  173.     tocPtr->discTitle = "Exposed  [disc 2]";
  174. #     if !defined(SKIPSONGS_Mike_Oldfield)
  175.     SET_CDtt( 1, 28.21, "Tubular Bells (Part 1)");
  176.     SET_CDtt( 2, 11.05, "Tubular Bells (Part 2)");
  177.     SET_CDtt( 3, 06.24, "Guilty");
  178. #     endif
  179.     }
  180.     if ( cdKey == MOLDFIELD_AMAROK ) { /* 1:00:04-47 */
  181.     tocPtr->discPerformer = "Mike OldField";
  182.     tocPtr->discTitle = "Amarok";
  183. #     if !defined(SKIPSONGS_Mike_Oldfield)
  184.     SET_CDtt( 1, 60.02, "Amarok");
  185. #     endif
  186.     }
  187.     if ( cdKey == PINKF_UMMAGUMMA_D1 ) { /* 0:39:41-23 */
  188.     tocPtr->discPerformer = "Pink Floyd";
  189.     tocPtr->discTitle = "Ummagumma  [disc 1]";
  190. #     if !defined(SKIPSONGS_Pink_Floyd)
  191.     SET_CDtt( 1, 08.32, "Astronomy Dominé");
  192.     SET_CDtt( 2, 08.50, "Careful With That Axe, Eugene");
  193.     SET_CDtt( 3, 09.27, "Set The Controls For The Heart Of The Sun");
  194.     SET_CDtt( 4, 12.50, "A Saucerful Of Secrets");
  195. #     endif
  196.     }
  197.     if ( cdKey == PINKF_WYWH_USA1 ) { /* 0:44:15-00 */
  198.     tocPtr->discPerformer = "Pink Floyd";
  199.     tocPtr->discTitle = "Wish You Were Here  [First USA release]";
  200.     /*
  201.      *    index 1.1 started 0:00:02-04 into CD
  202.      *    index 1.2 started 0:13:31-12 into CD, 0:13:29 into the song
  203.      *    index 2.0 started 0:21:02-49 into CD,  -00:02 into the song
  204.      *    index 2.1 started 0:21:05-11 into CD
  205.      *    index 2.2 started 0:26:11-48 into CD, 0:05:06 into the song
  206.      *    index 2.3 started 0:31:48-28 into CD, 0:10:43 into the song
  207.      */
  208. #     if !defined(SKIPSONGS_Pink_Floyd)
  209.     SET_CDtt( 1, 21.02, "Wish You Were Here; Side 1");    /* index=2 */
  210.     SET_CDtt( 2, 23.11, "Wish You Were Here; Side 2");    /* index=3 */
  211. #     endif
  212.     }
  213.     if ( cdKey == RENAIS_SCHEHER_TRC ) { /* 0:45:41-10 */
  214.     tocPtr->discPerformer = "Renaissance";
  215.     tocPtr->discTitle = "Scheherazade and Other Stories  [TRC]";
  216. #     if !defined(SKIPSONGS_Renaissance)
  217.     SET_CDtt( 1, 10.51, "Trip to the Fair");
  218.     SET_CDtt( 2, 03.09, "The Vultures Fly High");
  219.     SET_CDtt( 3, 07.08, "Ocean Gypsy");
  220.     SET_CDtt( 4, 24.31, "Song of Scheherazade");
  221. #     endif
  222.     }
  223.     if ( cdKey == RENAIS_SCHEHER_REP ) { /* 0:45:53-67 */
  224.     tocPtr->discPerformer = "Renaissance";
  225.     tocPtr->discTitle = "Scheherazade and Other Stories  [Repertoire]";
  226. #     if !defined(SKIPSONGS_Renaissance)
  227.     SET_CDtt( 1, 10.54, "Trip to the Fair");
  228.     SET_CDtt( 2, 03.08, "The Vultures Fly High");
  229.     SET_CDtt( 3, 07.10, "Ocean Gypsy");
  230.     SET_CDtt( 4, 24.39, "Song of Scheherazade");
  231. #     endif
  232.     }
  233.     if ( cdKey == RENAIS_CARNEGIE_D2 ) { /* 0:52:22-00 */
  234.     tocPtr->discPerformer = "Renaissance";
  235.     tocPtr->discTitle = "Live at Carnegie Hall  [disc 2]";
  236. #     if !defined(SKIPSONGS_Renaissance)
  237.     SET_CDtt( 1, 29.20, "Scheherazade");
  238.     SET_CDtt( 2, 23.00, "Ashes are Burning");
  239. #     endif
  240.     }
  241.     if ( cdKey == KSCH_ENTRANCE ) { /* 1:10:51-47 */
  242.     tocPtr->discPerformer = "Klaus Schulze";
  243.     tocPtr->discTitle = "En=Trance";
  244. #     if !defined(SKIPSONGS_Klaus_Schulze)
  245.     SET_CDtt( 1, 18.59, "En=Trance");
  246.     SET_CDtt( 2, 16.32, "a-Numerique");
  247.     SET_CDtt( 3, 17.31, "Fm Delight");
  248.     SET_CDtt( 4, 17.47, "Velvet System");
  249. #     endif
  250.     }
  251.     if ( cdKey == KSCH_DOMEEVENT ) { /* 1:14:18-00 */
  252.     tocPtr->discPerformer = "Klaus Schulze";
  253.     tocPtr->discTitle = "The Dome Event";
  254. #     if !defined(SKIPSONGS_Klaus_Schulze)
  255.     SET_CDtt( 1, 63.32, "The Dome Event");
  256.     SET_CDtt( 2, 10.44, "After Eleven");
  257. #     endif
  258.     }
  259.     if ( cdKey == KSCH_DRESDEN_D1 ) { /* 1:13:24-23 */
  260.     tocPtr->discPerformer = "Klaus Schulze";
  261.     tocPtr->discTitle = "The Dresden Performance  [disc 1]";
  262. #     if !defined(SKIPSONGS_Klaus_Schulze)
  263.     SET_CDtt( 1, 44.25, "Dresden One");
  264.     SET_CDtt( 2, 10.26, "Dresden Three");
  265.     SET_CDtt( 3, 18.31, "Dresden Five");
  266. #     endif
  267.     }
  268.     if ( cdKey == KSCH_DRESDEN_D2 ) { /* 1:08:50-70 */
  269.     tocPtr->discPerformer = "Klaus Schulze";
  270.     tocPtr->discTitle = "The Dresden Performance  [disc 2]";
  271. #     if !defined(SKIPSONGS_Klaus_Schulze)
  272.     SET_CDtt( 1, 46.50, "Dresden Two");
  273.     SET_CDtt( 2, 21.58, "Dresden Four");
  274. #     endif
  275.     }
  276.     if ( cdKey == SOFTW_SYNCODE ) { /* 0:55:47-00 */
  277.     tocPtr->discPerformer = "Software";
  278.     tocPtr->discTitle = "Syn-Code";
  279.     /*
  280.      *    index 1.1 started 0:00:02-04 into CD
  281.      *    index 1.2 started 0:02:04-08 into CD, 0:02:02 into the song
  282.      *    index 1.3 started 0:05:46-12 into CD, 0:05:44 into the song
  283.      *    index 1.4 started 0:12:06-17 into CD, 0:12:04 into the song
  284.      *    index 1.5 started 0:14:01-18 into CD, 0:13:59 into the song
  285.      *    index 1.6 started 0:17:00-21 into CD, 0:16:58 into the song
  286.      *    index 2.1 started 0:22:58-26 into CD
  287.      *    index 2.2 started 0:29:46-31 into CD, 0:06:48 into the song
  288.      *    index 2.3 started 0:35:18-36 into CD, 0:12:20 into the song
  289.      *    index 2.4 started 0:39:31-02 into CD, 0:16:33 into the song
  290.      *    index 2.5 started 0:42:16-04 into CD, 0:19:18 into the song
  291.      *    index 3.0 started 0:46:17-07 into CD, -00:02 before the song
  292.      *    index 3.1 started 0:46:20-07 into CD
  293.      */
  294.     SET_CDtt( 1, 22.56, "Syn-Code-A");        /* index = 6 */
  295.     SET_CDtt( 2, 23.22, "Syn–Code–Z");        /* index = 5 */
  296.     SET_CDtt( 3, 09.27, "Syn–Code–Sunset");
  297.     }
  298.     if ( cdKey == TDREAM_ENCORE ) { /* 1:11:00-45 */
  299.     tocPtr->discPerformer = "Tangerine Dream";
  300.     tocPtr->discTitle = "Encore";
  301. #     if !defined(SKIPSONGS_Tangerine_Dream)
  302.     SET_CDtt( 1, 16.07, "Cherokee Lane");
  303.     SET_CDtt( 2, 19.37, "Moonlight");
  304.     SET_CDtt( 3, 17.41, "Coldwater Canyon");
  305.     SET_CDtt( 4, 17.33, "Desert Dream");
  306. #     endif
  307.     }
  308.     if ( cdKey == TDREAM_ENCORE_DE ) { /* 1:11:17-67 */
  309.     tocPtr->discPerformer = "Tangerine Dream";
  310.     tocPtr->discTitle = "Encore - Live 1977  [definitive edition]";
  311.     /*
  312.      *    index 1.1 started 0:00:02-28 into CD, 0:00:00 into the song
  313.      *    index 1.2 started 0:03:43-65 into CD, 0:03:41 into the song
  314.      *    index 1.3 started 0:12:01-64 into CD, 0:11:59 into the song
  315.      *    index 2.1 started 0:16:25-26 into CD, 0:00:00 into the song
  316.      *    index 2.2 started 0:20:37-26 into CD, 0:04:12 into the song
  317.      *    index 2.3 started 0:24:05-25 into CD, 0:07:40 into the song
  318.      *    index 2.4 started 0:28:57-25 into CD, 0:12:32 into the song
  319.      *    index 2.5 started 0:33:14-24 into CD, 0:16:49 into the song
  320.      *    index 3.1 started 0:36:01-24 into CD, 0:00:00 into the song
  321.      *    index 3.2 started 0:45:43-61 into CD, 0:09:42 into the song
  322.      *    index 4.1 started 0:53:41-22 into CD, 0:00:00 into the song
  323.      *    index 4.2 started 0:58:28-22 into CD, 0:04:47 into the song
  324.      *    index 4.3 started 1:02:31-59 into CD, 0:08:50 into the song
  325.      *    index 4.4 started 1:05:48-59 into CD, 0:12:07 into the song
  326.      *    index 4.5 started 1:08:00-21 into CD, 0:14:19 into the song
  327.      */
  328. #     if !defined(SKIPSONGS_Tangerine_Dream)
  329.     SET_CDtt( 1, 16.22, "Cherokee Lane");
  330.     SET_CDtt( 2, 19.37, "Moonlight");
  331.     SET_CDtt( 3, 17.40, "Coldwater Canyon");
  332.     SET_CDtt( 4, 17.36, "Desert Dream");
  333. #     endif
  334.     }
  335.     if ( cdKey == TDREAM_WHITE ) { /* 0:38:37-15 */
  336.     tocPtr->discPerformer = "Tangerine Dream";
  337.     tocPtr->discTitle = "White Eagle";
  338. #     if !defined(SKIPSONGS_Tangerine_Dream)
  339.     SET_CDtt( 1, 20.13, "Mojave Plan");
  340.     SET_CDtt( 2, 04.02, "Midnight in Tula");
  341.     SET_CDtt( 3, 09.42, "Convention of the 24");
  342.     SET_CDtt( 4, 04.38, "White Eagle");
  343. #     endif
  344.     }
  345.     if ( cdKey == TDREAM_WHITE_DE ) { /* 0:38:23-25 */
  346.     tocPtr->discPerformer = "Tangerine Dream";
  347.     tocPtr->discTitle = "White Eagle  [definitive edition]";
  348. #     if !defined(SKIPSONGS_Tangerine_Dream)
  349.     SET_CDtt( 1, 20.08, "Mojave Plan");        /* index=4 */
  350.     SET_CDtt( 2, 04.01, "Midnight in Tula");
  351.     SET_CDtt( 3, 09.37, "Convention of the 24");
  352.     SET_CDtt( 4, 04.35, "White Eagle");
  353. #     endif
  354.     }
  355.     if ( cdKey == TDREAM_LOGOS ) { /* 0:51:12-02 */
  356.     tocPtr->discPerformer = "Tangerine Dream";
  357.     tocPtr->discTitle = "Logos - Live";
  358. #     if !defined(SKIPSONGS_Tangerine_Dream)
  359.     SET_CDtt( 1, 25.43, "Logos - Part One");
  360.     SET_CDtt( 2, 19.38, "Logos - Part Two");
  361.     SET_CDtt( 3, 05.49, "Dominion");
  362. #     endif
  363.     }
  364.     if ( cdKey == TDREAM_LOGOS_DE ) { /* 0:50:53-07 */
  365.     tocPtr->discPerformer = "Tangerine Dream";
  366.     tocPtr->discTitle = "Logos - Live 1982  [definitive edition]";
  367. #     if !defined(SKIPSONGS_Tangerine_Dream)
  368.     SET_CDtt( 1, 45.06, "Logos");
  369.     SET_CDtt( 2, 05.45, "Dominion");
  370. #     endif
  371.     }
  372.     if ( cdKey == TDREAM_HYPERB ) { /* 0:42:04-25 */
  373.     tocPtr->discPerformer = "Tangerine Dream";
  374.     tocPtr->discTitle = "Hyperborea";
  375. #     if !defined(SKIPSONGS_Tangerine_Dream)
  376.     SET_CDtt( 1, 09.16, "No Man's Land");
  377.     SET_CDtt( 2, 08.46, "Hyperborea");
  378.     SET_CDtt( 3, 04.04, "Cinnamon Road");
  379.     SET_CDtt( 4, 19.56, "Sphinx Lightning");
  380. #     endif
  381.     }
  382.     if ( cdKey == TDREAM_HYPERB_DE ) { /* 0:41:44-62 */
  383.     tocPtr->discPerformer = "Tangerine Dream";
  384.     tocPtr->discTitle = "Hyperborea  [definitive edition]";
  385. #     if !defined(SKIPSONGS_Tangerine_Dream)
  386.     SET_CDtt( 1, 09.11, "No Man's Land");
  387.     SET_CDtt( 2, 08.41, "Hyperborea");
  388.     SET_CDtt( 3, 03.59, "Cinnamon Road");
  389.     SET_CDtt( 4, 19.51, "Sphinx Lightning");    /* index=5 */
  390. #     endif
  391.     }
  392.     if ( cdKey == TDREAM_PERGAMON_CAR ) { /* 0:46:17-00 */
  393.     tocPtr->discPerformer = "Tangerine Dream";
  394.     tocPtr->discTitle = "Pergamon: Live at the »Palast Der Republic« GDR";
  395. #     if !defined(SKIPSONGS_Tangerine_Dream)
  396.     SET_CDtt( 1, 23.23, "Quichotte Part I");
  397.     SET_CDtt( 2, 22.53, "Quichotte Part II");
  398. #     endif
  399.     }
  400.     if ( cdKey == TDREAM_PERGAMON_REL ) { /* 0:46:09-20 */
  401.     tocPtr->discPerformer = "Tangerine Dream";
  402.     tocPtr->discTitle = "Pergamon – Live at the »Palast Der Republic« GDR  [Relativity]";
  403. #     if !defined(SKIPSONGS_Tangerine_Dream)
  404.     SET_CDtt( 1, 23.17, "Quichotte Part I");
  405.     SET_CDtt( 2, 22.50, "Quichotte Part II");
  406. #     endif
  407.     }
  408.     if ( cdKey == U2_WIDEAWAKEINAMERICA ) { /* 0:20:46-15 */
  409.     tocPtr->discPerformer = "U2";
  410.     tocPtr->discTitle = "Wide Awake in America";
  411.     tocPtr->discCatNum = "007567902792400";
  412. #     if !defined(SKIPSONGS_U2)
  413.     SET_CDtt( 1, 08.03, "Bad  [live]");
  414.     SET_CDtt( 2, 04.05, "A Sort of Homecoming  [live]");
  415.     SET_CDtt( 3, 03.50, "Three Sunrises");
  416.     SET_CDtt( 4, 04.46, "Love Comes Tumbling");
  417. #     endif
  418.     }
  419.     if ( cdKey == VAPO_GRAVITATIONAL ) { /* 0:41:06-13 */
  420.     tocPtr->discPerformer = "Vapourspace";
  421.     tocPtr->discTitle = "Gravitational Arch of 10";
  422.     SET_CDtt( 1, 35.07, "Magnetic Gravity Arc Suite");
  423.     SET_CDtt( 2, 05.57, "Gravitational Arch of 10  [radio/video edit]");
  424.     }
  425.     return self;
  426. }
  427.  
  428.  
  429. - (u_int) indexKey:(struct cd_toc *)tocPtr
  430. {
  431.     /* the objective for the key is to come up with a number that is
  432.        less than a signed integer, and yet is likely to be fairly
  433.        unique over all music CD's (note that alternate pressings of
  434.        the same title make it almost impossible to come up with a
  435.        truly unique key).
  436.        
  437.        key is based on hours, minutes, seconds, frames, the number
  438.        of tracks on the CD, and the elapsed time of the first track
  439.        on the CD.  That shouldn't produce too many duplicates.
  440.     */
  441.     u_int    calculatedKey;
  442.  
  443.     calculatedKey = tocPtr->info[100].elapsedSec;
  444.     calculatedKey = (calculatedKey * 75) + tocPtr->info[100].frame;
  445.     calculatedKey = (calculatedKey * 32) + (tocPtr->lasttrack % 32);
  446.     calculatedKey = (calculatedKey * 150) + (tocPtr->info[1].elapsedSec % 150);
  447.  
  448.     return calculatedKey;
  449. }
  450.  
  451.  
  452. @end
  453.